import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex)

const store = new Vuex.Store({
    state: {
        isHaveCamera: true,
        photoProgressData: {
            progressPhoto: "",
            photoBase64: "",
            checkNum: 0,
            hasPass: '',
            type: 1,
            uuid: "",
            source: '',
        },
        progress: {
            // 初始化
            INIT: 1,
            // 等待中
            WAIT: 2,
            // 验证不通过重新验证
            REGET: 3,
            // 	求助或者直接进入考试
            PHOTO: 4,
            // 求助结果页面
            REFRESH: 5
        },
        socketTask: null,
        socketCode: '',
        practiceSettings: null, // 练习设置
        examinationInfo: null, // 考试信息
        loginData: uni.getStorageSync('loginData'),
    },
    getters: {
        // 获取接收的信息
        socketMsgs: state => {
            return state.socketCode
        }
    },
    mutations: {
        // 在这里定义修改状态的方法
        updateInfoData(state, newState) {
            // 使用对象展开运算符合并新旧状态
            state.isHaveCamera = newState;
        },
        updateProgressData(state, newState) {
            // 使用对象展开运算符合并新旧状态
            state.photoProgressData = {
                ...state.photoProgressData,
                ...newState
            }
        },
        // 更新练习设置
        updatePracticeSettings(state, newState) {
            state.practiceSettings = { ...newState }
        },
        // 更新考试信息
        updateExaminationInfo(state, newState) {
            state.examinationInfo = { ...newState }
        },
    },
    actions: {
        // 在这里定义触发 mutations 的方法
        WEBSOCKET_INIT({
                           commit
                       }, url) {
            commit('WEBSOCKET_INIT', url)
        },
        CLOSE_SOCKET({
                         commit
                     }) {
            commit('CLOSE_SOCKET')
        }
    }
})

export default store